package cn.aku.d4_set;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Test1_Set {
    public static void main(String[] args) {


        Set<String> set = new HashSet<>();
        set.add("蟹黄包");
        set.add("小笼包");
        set.add("烧麦");
        set.add("牛肉包");
        set.add("null");
        set.add(null);
        System.out.println(set);
        /*
        1.set集合中的元素都是无序的！！！
        2. set集合中元素不能重复！！！
           set.add("烧麦");
           set.add("烧麦");
        3.set集合允许存放null值，0~1个
         */

        //测试常用方法
        //set.clear();//清空
        System.out.println(set.contains("灌汤包"));//判断是否包含该元素
        System.out.println(set.equals("奶黄包"));//false
        System.out.println(set.hashCode());//获得指定对象的哈希码值
        System.out.println(set.isEmpty());//判断为空
        System.out.println(set.remove(null));//移除
        System.out.println(set.size());
        //转换成数组并打印输出
        System.out.println(Arrays.toString(set.toArray()));

        Set<String> set2 = new HashSet<>();
        set2.add("蒸饺");
        set2.add("煎饺");
        set2.add("水饺");
        set2.add("蛋饺");
        System.out.println(set2);

        //将set2集合中所有元素存入set中
        System.out.println(set.addAll(set2));
        System.out.println(set);

        System.out.println(set.containsAll(set2));//ture
        //从set中移除set2
        System.out.println(set.removeAll(set2));
        System.out.println(set.containsAll(set2));//false

        /* retainAll()方法是取两个集合中的公共部分
         * 谁调用影响谁
         * */
        set.add("花蝴蝶");
        set2.add("花蝴蝶");

        //取 交集 并 替换 set
        System.out.println(set.retainAll(set2));
        System.out.println(set);
        System.out.println("======================");
        //集合迭代
        Iterator<String> it = set2.iterator();

        while (it.hasNext()) {

            System.out.println(it.next());
        }
    }
}
